package com.ldodds.deville.rdf;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.rdf.model.Model;
import com.ldodds.deville.calais.CalaisException;
import com.ldodds.deville.calais.OpenCalais;
import com.ldodds.deville.calais.Parameters;

public interface Deville
{
	public static final String TITLE = "title";
	public static final String DESCRIPTION = "description";
	public static final String DATE = "date";
	
	void setClient(OpenCalais client);
	OpenCalais getClient();
	
	Model enlighten(String content) 
		throws IOException, CalaisException;

	Model enlighten(String content, Parameters parameters)
		throws IOException, CalaisException;

	Model enlighten(InputStream stream) 
		throws IOException, CalaisException;

	Model enlighten(InputStream stream, Parameters parameters)
		throws IOException, CalaisException;
	
	Model enlighten(File file, Parameters parameters)
		throws IOException, CalaisException;
	
	Model enlighten(URL url, Parameters parameters)
		throws IOException, CalaisException;

	Model enlighten(Model data, String sparql)
		throws IOException, CalaisException;
	
	Model enlighten(Model data, Query sparql)
		throws IOException, CalaisException;
	
	Model enlighten(Model data, String sparql, Parameters parameters)
		throws IOException, CalaisException;
	
	Model enlighten(Model data, Query sparql, Parameters parameters)
		throws IOException, CalaisException;
}
